package com.ruoyi.system.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.system.entity.AbdulBaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;

/**
 * 提成规则操作记录（含完整规则字段+联系电话）对象 commission_rule_operation_log
 *
 * @author ruoyi
 * @date 2025-05-18
 */
@Data
@ApiModel("提成规则操作记录")
public class CommissionRuleOperationLog extends AbdulBaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 唯一标识符
     */
    @ApiModelProperty("唯一标识符")
    private Long id;

    /**
     * 操作类型（创建/修改/删除/启用/停用）
     */
    @Excel(name = "操作类型", readConverterExp = "创=建/修改/删除/启用/停用")
    @ApiModelProperty("操作类型（创建/修改/删除/启用/停用）")
    private String operationType;

    /**
     * 提成类型
     */
    @Excel(name = "提成类型")
    @ApiModelProperty("提成类型")
    private String commissionType;

    /**
     * 生效日期类型
     */
    @Excel(name = "生效日期类型")
    @ApiModelProperty("生效日期类型")
    private String effectiveDateType;

    /**
     * 自定义开始日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "自定义开始日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty("自定义开始日期")
    private Date customStartDate;

    /**
     * 自定义结束日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "自定义结束日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty("自定义结束日期")
    private Date customEndDate;

    /**
     * 规则状态
     */
    @Excel(name = "规则状态")
    @ApiModelProperty("规则状态")
    private String ruleStatus;

    /**
     * 提成计算方式
     */
    @Excel(name = "提成计算方式")
    @ApiModelProperty("提成计算方式")
    private String calculationMethod;

    /**
     * 固定金额（当calculation_method=固定金额提成时有效）
     */
    @Excel(name = "固定金额", readConverterExp = "当=calculation_method=固定金额提成时有效")
    @ApiModelProperty("固定金额（当calculation_method=固定金额提成时有效）")
    private BigDecimal fixedAmount;

    /**
     * 计算提成类型
     */
    @Excel(name = "计算提成类型")
    @ApiModelProperty("计算提成类型")
    private String commissionBasis;

    /**
     * 参与角色（逗号分隔：服务员,收银员,经理等）
     */
    @Excel(name = "参与角色", readConverterExp = "逗=号分隔：服务员,收银员,经理等")
    @ApiModelProperty("参与角色（逗号分隔：服务员,收银员,经理等）")
    private String participantRoles;

    /**
     * 参与桌台分类序号（逗号分隔）
     */
    @Excel(name = "参与桌台分类序号", readConverterExp = "逗=号分隔")
    @ApiModelProperty("参与桌台分类序号")
    private String tableCategoryIds;

    /**
     * 参与桌台分类名称（逗号分隔）
     */
    @Excel(name = "参与桌台分类名称", readConverterExp = "逗=号分隔")
    @ApiModelProperty("参与桌台分类名称")
    private String tableCategoryNames;

    /**
     * 提成条件描述
     */
    @Excel(name = "提成条件描述")
    @ApiModelProperty("提成条件描述")
    private String conditionDescription;

    /**
     * 提成金额/比例
     */
    @Excel(name = "提成金额/比例")
    @ApiModelProperty("提成金额/比例")
    private BigDecimal commissionValue;

    /**
     * 免单不参与提成
     */
    @Excel(name = "免单不参与提成")
    @ApiModelProperty("免单不参与提成")
    private String excludeFreeOrders;

    /**
     * 联系电话
     */
    @Excel(name = "联系电话")
    @ApiModelProperty("联系电话")
    private String phone;

    /**
     * 操作开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "操作开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty("操作开始时间")
    private Date operationStartTime;

    /**
     * 操作结束时间
     */
    @Excel(name = "操作结束时间")
    @ApiModelProperty("操作结束时间")
    private Date operationEndTime;

    /**
     * 操作员工ID（如工号）
     */
    @Excel(name = "操作员工ID", readConverterExp = "如=工号")
    @ApiModelProperty("操作员工ID（如工号）")
    private String operatorId;

    /**
     * 操作员工姓名
     */
    @Excel(name = "操作员工姓名")
    @ApiModelProperty("操作员工姓名")
    private String operatorName;

    /**
     * 提成规则名称
     */
    @Excel(name = "提成规则名称")
    @ApiModelProperty("提成规则名称")
    private String ruleName;

    /**
     * 提成规则编号
     */
    @Excel(name = "提成规则编号")
    @ApiModelProperty("提成规则编号")
    private String ruleCode;

    /**
     * 修改前数据
     */
    @Excel(name = "修改前数据")
    @ApiModelProperty("修改前数据")
    private String beforeChange;

    /**
     * 修改后数据
     */
    @Excel(name = "修改后数据")
    @ApiModelProperty("修改后数据")
    private String afterChange;

    /**
     * 变更详情（如"将提成比例从5%调整为8%"）
     */
    @Excel(name = "变更详情")
    @ApiModelProperty("变更详情（如\"将提成比例从5%调整为8%\"）")
    private String changeDetail;

    /**
     * 操作员工IP地址
     */
    @Excel(name = "操作员工IP地址")
    @ApiModelProperty("操作员工IP地址")
    private String ipAddress;

    /**
     * 操作员工浏览器/设备信息
     */
    @Excel(name = "操作员工浏览器/设备信息")
    @ApiModelProperty("操作员工浏览器/设备信息")
    private String userAgent;
}